package IngresoAlSistema;


import ConexionBD.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author carlosfos
 */
public class FacadeIngresoAlSistema implements ActionListener, KeyListener{
    
    VentanaIngresoAlSistema ventanaIngreso1;
    String tipoUsuario = "";
    String loginVentana = "";
    String passwordVentana = "";

    public FacadeIngresoAlSistema() {
        
        this.ventanaIngreso1 = new VentanaIngresoAlSistema();
        ventanaIngreso1.asignarActionListener(this);
        ventanaIngreso1.getCampoPassword().addKeyListener(this);
        ventanaIngreso1.setVisible(true);
                
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        
        if(e.getActionCommand().equalsIgnoreCase("Ingresar")){
            validacionIngreso();
        }
        
        if(e.getActionCommand().equalsIgnoreCase("Salir")){
            System.exit(0);
        }
        
    }
    
    public void validacionIngreso(){
        
            if(ingresarAlSistema()){
                
                if(tipoUsuario.equalsIgnoreCase("administrador")){
                    
                    mostrarVentanaAdministrador();
                
                }else{
                    if(tipoUsuario.equalsIgnoreCase("cajero")){
                        
                        mostrarVentanaCajero();
                        
                    }
                }
            
            }else{
                
                if(loginVentana.equalsIgnoreCase("")||passwordVentana.equalsIgnoreCase("")){
                    JOptionPane.showMessageDialog(null, "Hay Campos Vacios!!!");
                }else{
                    ventanaIngreso1.getCampoPassword().setText("");
                    JOptionPane.showMessageDialog(null, "El Usuario No Existe, Por Favor Verifique Su Login & Password");
                }
            
            }
    
    }
    
    public boolean ingresarAlSistema(){
        
        boolean existeUsuario = false;
        
        ClienteSQL conexionCliente = new ClienteSQL();
        // Luego de que creen un objeto ClienteSQL, para empezar a realizar consultas, 
        // no olvidar llamar al metodo .realizarConexionServidor();
        conexionCliente.realizarConexionServidor();
        
        loginVentana = ventanaIngreso1.getCampoLogin().getText();
        passwordVentana = ventanaIngreso1.getCampoPassword().getText();        
        
        // Se le debe pasar a la consulta la siguiente especificacion:
        // Si se va a realizar una consulta debe seguir la siguiente sintaxis:
        // n#consulta , donde n representa la cantidad de columnas que retornará la consulta
        // esto se realiza por cuestiones del manejo de sockets
        
        // .realizarConsultaBD retorna un arrayList semejante al comportamiento de un resultset
        // es decir será un arreglo de arreglos, donde cada arreglo que esta dentro, representará 
        // cada fila del resultado de la consulta sql.
        ArrayList arregloResultSet = conexionCliente.realizarConsultaBD(
                "3#SELECT * FROM usuario WHERE login='"+loginVentana+"' AND password='"+passwordVentana+"';");
        
        String login = null;
        String password = null;
        
        for(int i=0;i<arregloResultSet.size();i++){
            ArrayList get = (ArrayList) arregloResultSet.get(i);
            login = (String) get.get(0);
            password = (String) get.get(1);
            tipoUsuario = (String) get.get(2);
        }
        
        if(!(arregloResultSet.size()==0)){
            
            existeUsuario = true;
        
        }
        
        return existeUsuario;
    
    }
    
    public void mostrarVentanaAdministrador(){
        
        JOptionPane.showMessageDialog(null, "Mostrando Ventana Admin...........");
        ventanaIngreso1.setVisible(false);
        System.exit(0);
        
    }
    
    public void mostrarVentanaCajero(){
        
        JOptionPane.showMessageDialog(null, "Mostrando Ventana Cajero...........");
        ventanaIngreso1.setVisible(false);
        System.exit(0);
    
    }

    @Override
    public void keyTyped(KeyEvent ke) {
        
    }

    @Override
    public void keyPressed(KeyEvent ke) {
        if(ke.getExtendedKeyCode() == KeyEvent.VK_ENTER){
            validacionIngreso();
        }
    }

    @Override
    public void keyReleased(KeyEvent ke) {

    }
    
}
